package frsf.cidisi.exercise.tp.situationCalculus;

import frsf.cidisi.faia.state.EnvironmentState;

import java.util.ArrayList;
import componentes.Aldea;
import componentes.Mapa;
import componentes.Tesoro;

public class Isla_Emicere_State extends EnvironmentState {

	// TODO: Setup Variables
	private Mapa world;
	private Aldea pos_agente;
	

	public Isla_Emicere_State() {
		// TODO: Complete Method
		world = new Mapa();
		this.initState();
	}

	@Override
	public void initState() {
		// TODO: Complete Method
		this.world.inicializar_mapa_con_tesoros();
		this.pos_agente = world.getInicial();

	}


	@Override
	public String toString() {
		// TODO: Complete Method
		String str = "";

		str = str + "\nEl agente se encuentra en la aldea:  "
				+ pos_agente.getNombre() + " \n";

		for (int i = 0; i < world.getListaAldeas().size(); i++) {
			str = str
					+ "	Aldea: "
					+ world.getListaAldeas().get(i).getNombre()
					+ ", valor del cofre: "
					+ world.getListaAldeas().get(i).getTesoro()
							.getValor_cofre() + "\n";

		}

		str = str + "Aldea  Inicial: " + world.getInicial().getNombre() + "\n";
		str = str + "Aldea  Final: " + world.getFinal().getNombre() + "\n";

		return str;
	}

	// The following methods are agent-specific:
	
	public Mapa getworld() {
		return world;
	}

	public Aldea getpos_agente() {
		return pos_agente;
	}

	public void setpos_agente(Aldea arg) {
		pos_agente = arg;
	}

	public Tesoro getTesoro_posAgente() {
		return pos_agente.getTesoro();

	}
	
	
	public ArrayList<Aldea> getAldeas() {

		return world.getListaAldeas();
	}

	public void borrarTesoro(Aldea nombre_aldea) {

		Tesoro tesoro_aux;

		tesoro_aux = new Tesoro();
		tesoro_aux.setContenido(0, 0, 0, 0, 0, 0, 0);

		world.getAldea(nombre_aldea.getNombre()).setTesoro(tesoro_aux);
	}

	

	public void ejecutarPirata() {

		int num_ramdom = (int) Math.floor(Math.random()*(0-9+1)+9);   
	
		if(num_ramdom <= 5 ){
			int aldea_ramdom = (int) Math.floor(Math.random()*(0-10+1)+10); 


			if(world.getListaAldeas().get(aldea_ramdom).getTesoro().getValor_cofre()!=0){
				this.world.getListaAldeas().get(aldea_ramdom).setTesoro(new Tesoro(0, 0, 0, 0, 0));
				System.out.println(">>>>>>> El pirata robo completamente el tesoro de la aldea: " + world.getListaAldeas().get(aldea_ramdom).getNombre() +" <<<<<<<<" );
			}
			else{
				System.out.println(">>>>>>> No pude robar el tesoro de la aldea: " + world.getListaAldeas().get(aldea_ramdom).getNombre() +"  :( <<<<<<<<" );
			}


		}

	}
}
